﻿//GridView单选
//allName 全选 Name
//itemName 单项 Name
//txt 存放TextBox 的ID
function CheckItem(e,allName,itemName,txt)
{
  Recod(itemName,txt);
  var all = document.getElementsByName(allName)[0];
  if(!e.checked)
  {all.checked = false;}
  else
  {
    var aa = document.getElementsByName(e.name);
    for (var i=0; i<aa.length; i++)
    if(!aa[i].checked) 
        return;
    all.checked = true;
  }
}

//item 目标CheckBox id
//txt  存放TextBox 的ID
function Recod(item,txt)
{
    var s="";   
    var aa = document.getElementsByName(item);
    for (var i=0; i<aa.length; i++)
        if(aa[i].checked) s=s + i+",";
    var t=document.getElementById(txt);
    t.value=s;
}

function fileload(fileurl)
{
    
    window.open(escape(fileurl));
}

/* 特别注意：
对于js的一个checkbox，有indeterminate和checked 2个属性
它们互相影响，如果原来是indeterminate是true，现在把该控件设为打钩
那么需要如下2句：
indeterminate = false;
checked = true;
类似的，如果要把原来打钩的变成半选中，也需要2句：
checked = false;
indeterminate = true;
*/
 function setParentState(objNode)
    {
        
        var objParentDiv = WebForm_GetParentByTagName(objNode,"div");
        
        if(objParentDiv == null || objParentDiv == "undefined")
            return;
         
        var divID = objParentDiv.getAttribute("ID");
        var prefix = divID.substring(0,divID.indexOf("Nodes"));
        var parentID = prefix + "CheckBox";
        
        var parentChk = document.getElementById(parentID);
        if(parentChk == null || parentChk == "undefined")
            return;
        
        if (objNode.checked || objNode.indeterminate)
        {
            if(isAllChildrenChecked(parentChk))
            {
                parentChk.checked = true;
                parentChk.indeterminate=false;
            }
            else
            {
                parentChk.indeterminate=true;
                parentChk.checked = false;
            }
        }
        else
        { 
            if (isAllChildrenUnChecked(parentChk))
            {
                parentChk.checked = false;
                parentChk.indeterminate=false;               
            }
            else
            {
                parentChk.indeterminate=true;
                parentChk.checked = false;
            }
        }    
        
        
        setParentState(parentChk);
    }
    
    function setChildState(objNode)//设定子控件状态
    {
        var nodeID = objNode.getAttribute("ID");   //chkBox ID 
        var prefix = nodeID.substring(0,nodeID.indexOf("CheckBox"));  //节点的前缀
        var childrenDiv = document.getElementById(prefix + "Nodes");
        
        if(childrenDiv == null || childrenDiv == "undefined")
            return ;
         
        var childrenArray = childrenDiv.children; //取得所有子控件
        
        for(var i = 0;i< childrenArray.length;i++)
        {
            var container = childrenArray[i]; //子控件的容器
            var chk = WebForm_GetElementByTagName(container,"input"); //查找Check控件,由于只有一个种Input控件,就是CheckBox
            chk.checked = objNode.checked;//alert(objNode.indeterminate);
            chk.indeterminate = false;  //这里必须有这句，否则半选中不受是否check的影响    
            setChildState(chk);                       
        }            
    }
    
    function isAllChildrenUnChecked(objChk)
    {
        var objChkID = objChk.getAttribute("ID");
        var prefix = objChkID.substring(0,objChkID.indexOf("CheckBox"));  //节点的前缀
        var childrenDiv = document.getElementById(prefix + "Nodes");
       
         if(childrenDiv == null || childrenDiv == "undefined")
            return false;
              
        var childrenArray = childrenDiv.children; //取得所有子控件
       
        for(var i = 0;i< childrenArray.length;i++)
        {
            var container = childrenArray[i]; //子控件的容器
            var chk = WebForm_GetElementByTagName(container,"input"); //查找Check控件,由于只有一个种Input控件,就是CheckBox
           
            if (chk.checked)
                return false;
                       
        }
      
        return true;
    }
    function isAllChildrenChecked(objChk)
    {
        var objChkID = objChk.getAttribute("ID");
        var prefix = objChkID.substring(0,objChkID.indexOf("CheckBox"));  //节点的前缀
        var childrenDiv = document.getElementById(prefix + "Nodes");
        
         if(childrenDiv == null || childrenDiv == "undefined")
            return ;
            
        var childrenArray = childrenDiv.children; //取得所有子控件
        
        for(var i = 0;i< childrenArray.length;i++)
        {
            var container = childrenArray[i]; //子控件的容器
            var chk = WebForm_GetElementByTagName(container,"input"); //查找Check控件,由于只有一个种Input控件,就是CheckBox
           
            if (!chk.checked)
                return false;
                       
        }
        
        return true;
    }
    

    //触发事件
    function HandleCheckEvent()
    {

        var objNode = event.srcElement; 

        if(objNode.tagName !="INPUT" || objNode.type!="checkbox")
            return;
         //设定子Chk状态
        setChildState(objNode);
        //设定父Chk状态
        setParentState(objNode);

      
    }

